////////////////////////////////////////////////////////////////////////////////
//
// Aranya Code
// author: TonyHack
// E-mail: tonyjobmails@gmail.com
//
// filename: encoding.h
// function:  字符编码相关函数声明
//
////////////////////////////////////////////////////////////////////////////////

#ifndef _ENCODING_H
#define _ENCODING_H

#include "type.h"
#include "func.h"
#include <string>
#include <iconv.h>
#include <stdlib.h>

namespace aranya_encoding
{
	/// 编码转换
	char * encode_convert(const char *from, const char *to, char *p_text, int len_t, int *len_r);
	/// UTF-8转GB2312(C语言版)
	bool urt8_to_gb2312(char *p_text, int len_t, char *p_result, int &len_r);
	/// UTF-8转GB2312(C++版)
	bool urt8_to_gb2312(std::string &s);
	/// GB2312转UTF-8(C语言版)
	bool gb2312_to_utf8(char *p_text, int len_t, char *p_result, int &len_r);
	/// GB2312转UTF-8(C++版)
	bool gb2312_to_utf8(std::string &s);
};

namespace aranya_url_encoding
{
	/// 是否是安全字符(不用编码)
	bool is_unsave_char(char data);
	//////////////////////////////////////////////////////////////////
	/// url编码(C语言版)
	char* url_encoding(const char *p_text, int len, int *encode_len);
	/// url编码(C++版)
	bool url_encoding(std::string &s);
	/// url解码(C语言版)
	bool url_decode(const char *p_text, int len, int *encode_len);
	/// url解码(C++版)
	bool url_decoding(std::string &s);
	//////////////////////////////////////////////////////////////////
/*
	//////////////////////////////////////////////////////////////////
	/// URL GB2312编码(C语言版)，返回编码后的结果
	char* url_gb2312_encode(const char *p_text, int len, int *encode_len);
	/// URL GB2312编码(C++语言版)
	bool url_gb2312_encode(std::string &s);
	/// URL GB2312解码(C语言版)，参数p_text做为输入也做为输出
	bool url_gb2312_decode(const char *p_text, int len, int *encode_len);
	/// URL GB2312解码(C++语言版)
	bool url_gb2312_decode(std::string &s);
	//////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////
	/// URL UTF编码(C语言版)
	char* url_utf8_encode(const char *p_text, int len, int *encode_len);
	/// URL UTF编码(C++语言版)
	bool url_utf8_encode(std::string &s);
	/// URL UTF8解码(C语言版)
	bool url_utf8_encode(const char *p_text, int len, int *encode_len);
	/// URL GB2312解码(C++语言版)
	bool url_utf8_decode(std::string &s);
	//////////////////////////////////////////////////////////////////
*/
};

#endif
